草庐IT

java - 递归计算中偶发的StackOverflowError

全部标签

Ruby 堆栈级别太深异常不是来自递归无限循环

编辑:(已解决)实际上它可能是因为无限循环而引发的我正在编码,在添加一个方法后我得到了这个:user_name@the_computer:/media/ECC3-C3B0/Prog/mts/src/mts$raketest--trace**Invoketest(first_time)**Executetest/home/user_name/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:stackleveltoodeep(SystemStackError)rakeabo

ruby - 在 JRuby 中,如何确定导致 java.lang.ThreadDeath 的原因?

在为一些与JRuby中的临时文件交互的代码运行单元测试时,我有时会得到以下信息:Exception:java.lang.ThreadDeaththrownfromtheUncaughtExceptionHandlerinthread"Thread-6395"它似乎没有引起任何问题,但这是怎么回事,我如何确定它发生在哪里?我尝试打开-d,但这并没有给我异常的堆栈跟踪。 最佳答案 FWIW:这可能与http://jira.codehaus.org/browse/JRUBY-7074有关.我偶尔会在不使用反引号但调用系统的JRuby程序中

ruby - 为什么这个递归不是无限的?

我和我的friend们正在做一些基本的Ruby练习来感受这门语言,我们遇到了一个我们还无法理解的有趣行为。基本上,我们正在创建一个tree只有一个类的数据类型,node,它只包含一个值和一个包含零个或多个nodes的数组.我们正在使用rspec的autospec测试运行程序。有一次,我们开始编写测试以禁止无限递归(循环树结构)。这是我们的测试:it"breaksonacircularreference,whichwewillfixlater"dotree1=Node.new1tree2=Node.new1tree2.add_childtree1tree1.add_childtree2(

ruby - 计算具有特定子集大小的集合分区

给定一个包含n个元素的集合,我需要找到该集合的所有分区,其中有k个大小几乎相等的子集。例如,对于一个有7个元素和3个子集的集合,我只想要分区,其中有两个子集,每个子​​集有2个元素,一个子集有3个元素。我不想要一个包含1、2和4个元素的子集的分区。换句话说,有877possiblepartitions对于一组7个元素,但我只对由2/2/3个元素组成的子集组成的105个(?)分区感兴趣:实际上n大约是35,这意味着大约有2.81*1027个分区,“仅”8,338,573,669,964,101partitionswiththreesubsets.因此,我不可能将它们全部计算出来并费力地找

ruby - 递归复制不包括文件夹匹配过滤器

我正在尝试创建一种Rake方法,将所有文件从一个位置复制到另一个位置,但排除所有属于SVN文件夹的文件夹,包括它们的文件。这是我开始使用的名为Filesystem的模块中的方法,但无法确定它是否有效或缺少的代码是什么。该模块具有以下要求:require"fileutils"方法:defFileSystem.CopyFilesWithoutSVN(source,target)#willcopyfilesfromsourcefoldertotargetfolderexcluding.svnfoldersFileUtils.cp_rDir.glob(source).reject{|entry

ruby-on-rails - 如何从(YAML)哈希中递归删除所有具有空值的键?

我一直在尝试删除我的YAML文件中所有具有空(空白)值或空哈希作为值的哈希键。这earlierpost帮助我几乎正确地完成了它,但是只要有足够深的嵌套,递归的单行代码就会在我的YAML转储中留下空哈希值。我非常感谢任何帮助。谢谢!proc=Proc.new{|k,v|(v.kind_of?(Hash)&&!v.empty?)?(v.delete_if(&proc);nil):v.blank?}hash={"x"=>{"m"=>{"n"=>{}}},'y'=>'content'}hash.delete_if(&proc)实际输出{"x"=>{"m"=>{}},"y"=>"content"

ruby-on-rails - 如何计算Float中的小数位数?

我正在使用Ruby1.8.7和Rails2.3.5。如果我有一个像12.525这样的float,如何获取小数点后的位数?在这种情况下,我希望得到“3”。 最佳答案 我猜是这样的:n=12.525n.to_s.split('.').last.size 关于ruby-on-rails-如何计算Float中的小数位数?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8597766/

Ruby 1.9.3 Dir.glob 奇怪的递归匹配行为

假设目录结构为:a/b/c/d/e/f/g/h我试图通过以下方式找到“h”:Dir.glob('a/**/f/g/h')但是这不起作用。有什么想法吗?您可以尝试下面的测试用例:$/usr/bin/ruby-vruby1.9.3p194(2012-04-20revision35410)[x86_64-linux]$mkdir-pa/b/c/d/e/f/g/h$ruby-e"putsDir.glob('a/**/*')"a/ba/b/ca/b/c/da/b/c/d/ea/b/c/d/e/fa/b/c/d/e/f/ga/b/c/d/e/f/g/h$ruby-e"putsDir.glob('a

ruby - 从关联 block 中递归调用 Ruby 方法。还有别的办法吗?

我想出了这个:deffx,&byieldx,bendf4do|i,b|pifi-1,&bifi>0end结果:43210还有别的办法吗? 最佳答案 这取决于您的实际代码的细节,但根据您的示例,如果您预先命名block,则可以避免在函数中产生值和block。例如:deff(x,&b)yieldxendfoo=lambdado|i|pif(i-1,&foo)ifi>0endf(4,&foo)但是,我想找到一个更优雅的解决方案来解决这个问题。我怀疑这将是Y组合器的一个很好的应用。一旦我有更好的东西给你,我会更新这条消息。

ruby - yield 递归

所以我正在尝试做这样的事情:deffunc(x,y)ifx.length==1thenn=x.pop()yield(n,y)elsen=x.pop()yield(n,func(x,y))endend这样调用它:a=func([1,2,3,4,5],0)do|x,y|x+yend有没有可能做这样的事情?我一直没有得到任何阻止(yield)(LocalJumpError)。我什至尝试做一些不同的事情:deffunc(x,y)func(x,y)do|tail|..endend但没有运气谢谢。 最佳答案 是的,您可以显式地将block作为参